﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Sistema_Totem.Presentacion.Contrato.Propuestas;
using Sistema_Totem.Logica.Fabricas;
using Sistema_Totem.Logica.Comandos;
using Sistema_Totem.Clases;

namespace Sistema_Totem.Presentacion.Presentador.Propuestas
{
    public class PresentadorEliminarPropuesta
    {
        #region Atributos
        
        private IContratoEliminarPropuesta _vista;
        private string _mensajeConfirmacion = "¿Está seguro que desea eliminar la propuesta asociada al proyecto?";
        private string _mensajeExito = "Propuesta eliminada exitosamente";
        private string _mensajeError = "La propuesta no pudo ser eliminada";
        private string _mensajeNoExiste = "Este proyecto no posee una propuesta";

        #endregion Atributos

        #region Constructor
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="vista">El contrato que implementa</param>
        public PresentadorEliminarPropuesta(IContratoEliminarPropuesta vista)
        {
            _vista = vista;
        }

        #endregion Constructor

        #region Metodos

        /// <summary>
        /// Metodo que es llamado al presionar el boton de eliminar y elimina la propuesta
        /// del proyecto
        /// </summary>
        public void EliminarPropuesta()
        {
            
            if (ValidarExistenciaPropuesta())
            {
                Proyecto _miProyecto = (Proyecto)_vista.Sesion["proyecto"];
                Comando<bool> _comando = FabricaComando.CrearComandoEliminarPropuesta(_miProyecto.IdProyecto);
                if (_comando.Ejecutar())
                {
                    _vista.botonCancelar.Visible = false;
                    _vista.botonEliminar.Visible = false;
                    _vista.etiquetaMensajeConfirmacion.Visible = false;
                    _vista.etiquetaMensajeInformativo.Visible = true;
                    _vista.etiquetaMensajeInformativo.Text = _mensajeExito;
                }
                else
                {
                    _vista.botonCancelar.Visible = false;
                    _vista.botonEliminar.Visible = false;
                    _vista.etiquetaMensajeConfirmacion.Visible = false;
                    _vista.etiquetaMensajeInformativo.Visible = true;
                    _vista.etiquetaMensajeInformativo.Text = _mensajeError;
                }
            }
            else if (ValidarExistenciaPropuesta()==false) 
            {
                _vista.botonCancelar.Visible = false;
                _vista.botonEliminar.Visible = false;
                _vista.etiquetaMensajeConfirmacion.Visible = false;
                _vista.etiquetaMensajeInformativo.Text = _mensajeNoExiste;
            }
            

        }

        /// <summary>
        /// Metodo que valida si existe una propuesta para el proyecto o no
        /// </summary>
        /// <returns>True si tiene, False si no tiene</returns>
        public bool ValidarExistenciaPropuesta()
        {
            Proyecto _miProyecto = (Proyecto)_vista.Sesion["proyecto"];
            Comando<bool> _comando = FabricaComando.CrearComandoVerificarPropuesta(_miProyecto.IdProyecto);
            if (_comando.Ejecutar() == false)
            {
                _vista.botonCancelar.Visible = false;
                _vista.botonEliminar.Visible = false;
                _vista.etiquetaMensajeConfirmacion.Visible = false;
                _vista.etiquetaMensajeInformativo.Text = _mensajeNoExiste;
                return false;
            }
            else
            {
                _vista.botonCancelar.Visible = true;
                _vista.botonEliminar.Visible = true;
                _vista.etiquetaMensajeConfirmacion.Visible = true;
                _vista.etiquetaMensajeConfirmacion.Text = _mensajeConfirmacion;
                _vista.etiquetaMensajeInformativo.Visible = false;
                return true;

            }

        }

        #endregion Metodos
    }
}